0 TEXT : HOME : INVERSE : LIST 61001 -: NORMAL : VTAB 2: FOR X = 2 TO 23: PRINT " :::::::";: HTAB 33: PRINT ":::::::": NEXT : FOR X = 0 TO 4999: NEXT : NORMAL : REM CHEAP TITLE PAGE
1 VTAB 23: PRINT CHR$(4)"NOMONCIO": REM TURN OFF "MON"
310 VTAB 12: HTAB 16: INVERSE : PRINT "[READING]": NORMAL
320 RETURN
1000 REM <CTRL-J><CTRL-J>::: INPUT ROUTINE :::<CTRL-J><CTRL-J>
1007 REM MARGINS:A=LEFT,B=RIGHT,C=TOP,D=BOTTOM
1010 INVERSE : FOR X = C TO D: VTAB X: HTAB A: PRINT SPC( B -1): PRINT : NEXT : REM DRAW "RECIPE CARD"
1030 POKE LFT,A -1: POKE TP,C -1: POKE BM,D: POKE WTH,B: REM SET WINDOW
1040 VTAB C: PRINT : VTAB C: HTAB 1: REM POSITION CURSOR
1050 REM TEXT IS CAPTURED IN A$(ARRAY.EACH MEMBER CAN HAVE UP TO 217 CHARS.
1060 STRING = 0: POKE CB,STRING
1070 IF POS(X) < >B -1 THEN 1080: REM CHECK FOR END OF LINE
1075 IF PEEK(VC) = D -1 THEN CALL UP: VTAB PEEK(VC): NORMAL : PRINT S$;: INVERSE : PRINT SPC( B -1);: HTAB 1: GOTO 1080: REM END OF PAGE; MOVE TEXT UP ONE AND WHITE IN NEW BOTTOM LINE
1077 VTAB PEEK(VC) +2: HTAB 1
1079 REM WAIT FOR KEY; IF IT IS A CTRL CHAR,QUOTE,OR "ESC" THEN CHECK IT OUT AT LINE 1100
1080 FLASH : PRINT U$;: INVERSE : WAIT KB,128:A$ = CHR$( PEEK(KB)): IF ASC(A$) <160 OR ASC(A$) >222 OR ASC(A$) = 162 THEN 1100
1084 REM ADD CURRENT CHAR (A$) TO END OF STRING A$(STRING). IF A$(STRING) IS FULL THEN ADVANCE STRING
1085 A$(STRING) = A$(STRING) +A$: IF LEN(A$(STRING)) = 217 THEN STRING = STRING +1:A$(STRING) = ""
1086 IF STRING >9 THEN CALL BP: CALL BP: CALL BP: CALL BP: GOTO 1300: REM RECIPE IS TOO LONG;SAVE WHAT'S BEEN TYPED SO FAR AND RETURN TO MENU
1087 HTAB POS(X): PRINT A$;
1090 POKE CB,0: GOTO 1070
1100 REM SPECIAL CHARACTER
1110 IF A$ = CHR$(141) THEN 1300: REM 'RTN' INDICATES DONE
1112 IF A$ = CHR$(155) THEN NORMAL : POKE CB,0: HOME : PRINT : RUN 10: REM "ESC" KEY PRESSED
1115 IF A$ = CHR$(136) THEN 1120: REM BACKSPACE
1116 PRINT H$;: CALL BP: GOTO 1090: REM INVALID CHAR.
1120 IF LEN(A$(STRING)) >1 THEN A$(STRING) = LEFT$(A$(STRING), LEN(A$(STRING)) -1): GOTO 1135: REM REMOVE LAST CHAR
1130 IF LEN(A$(STRING)) = 0 THEN 1116: REM CAN'T BACKSPACE INTO A PREVIOUS STRING, SORRY
1132 A$(STRING) = "": REM IF THERE WAS 1 CHAR, NOW STRING IS EMPTY
1135 PRINT A$S$;
1140 IF POS(X) = 1 AND PEEK(VC) >C -1 THEN VTAB PEEK(VC): HTAB B +1
1150 GOTO 1087
1300 POKE CB,0: CALL BP: TEXT : HOME : NORMAL : RETURN : REM EXIT
10000 REM <CTRL-J><CTRL-J><CTRL-J>::: ENTER RECIPES :::<CTRL-J><CTRL-J>
10010 HOME : INVERSE : VTAB 3:A$ = ": FILE NEW RECIPES :": GOSUB 100: NORMAL
10020 VTAB 6: FOR X = 0 TO 4: PRINT "<" CHR$(X +65)">...."CT$(X): NEXT : VTAB 6: FOR X = 5 TO 9: HTAB 23: PRINT "<" CHR$(X +65)">...."CT$(X): NEXT
10030 FOR X = 5 TO 11 STEP 6: VTAB X: PRINT DASH$: NEXT
10040 PRINT
10050 PRINT "ENTER THE LETTER OF THE": PRINT "APPROPRIATE CATEGORY <A-J>:"U$;: HTAB 28: INPUT "";CG$: IF CG$ = "" THEN HOME : GOTO 50200
10055 CG = ASC(CG$) -65: IF CG <0 OR CG >9 THEN HOME : GOTO 50200
10060 PRINT : PRINT "NAME OF RECIPE ";: FOR X = 1 TO 20: PRINT U$;: NEXT : HTAB 15: INPUT ":";NM$
10065 IF LEN(NM$) >20 THEN CALL BP: PRINT : PRINT "NAME MUST BE NO LONGER THAN 20 CHARS.": GOTO 10060
10070 VTAB 19: PRINT "NAME:";: FLASH : PRINT NM$: NORMAL : PRINT : PRINT "CATEGORY:";: FLASH : PRINT CT$(CG): NORMAL
10080 PRINT : PRINT "IS THE ABOVE INFO CORRECT <Y/N>?"U$;: HTAB 33: INPUT "";YN$:YN$ = LEFT$(YN$,1): IF YN$ < >"N" THEN 10100
30355 PRINT CHR$(10) CHR$(10) CHR$(10) CHR$(10): REM LINE FEEDS
30360 PR# 0: REM PRINTER <OFF>
30364 REM
30365 REM NOTE: DELETE CHR$(X) CHARS FROM LINES 30330,30340AND 30355 FOR USE W/ PRINTEROTHER THAN AN EPSON MX.
30366 REM
30370 GOSUB 200: PRINT : RUN 10
31000 REM NO RECIPES IN CATEGORY
31005 FOR X = 1 TO 3: CALL BP: NEXT : HOME
31010 VTAB 11: PRINT "THERE ARE NO RECIPES CURRENTLY IN THE": PRINT Q$CT$(CG)Q$" FILE.": PRINT : GOSUB 200: HOME : GOTO 50200
40000 REM <CTRL-J><CTRL-J><CTRL-J>::: ERROR TRAP :::<CTRL-J><CTRL-J>
40010 TEXT : HOME : NORMAL : PR# 0
40020 ER = PEEK(222): IF ER = 255 THEN 60000
40030 IF ER < >4 AND ER < >5 AND ER < >8 AND ER < >9 AND ER < >10 THEN CALL -211: VTAB 5: PRINT "ERROR #" PEEK(222)" HAS OCCURRED IN LINE " PEEK(218) + PEEK(219) *256: STOP
40040 PRINT D$"CLOSE"
40050 IF ER = 9 THEN PRINT "THIS DISK IS NOW FULL. THE CURRENT RECIPE HAS NOT BEEN PROPERLY SAVED. YOU SHOULD MAKE ROOM ON THIS DISK OR MOVE THESE 'RF' FILES TO A NEW DISK."
40060 IF ER = 10 THEN PRINT "ALL 'RF' FILES MUST BE UNLOCKED IN ORDERTHAT THIS PROGRAM WRITE TO THEM. THE CURRENT RECIPE HAS NOT BEEN SAVED. YOU MUST UNLOCK ALL 'RF' FILES BEFORE USING THIS PROGRAM AGAIN."
40070 IF ER = 4 THEN PRINT "FILES CANNOT BE WRITTEN TO THIS DISK AS IT IS WRITE PROTECTED. THE CURRENT REC- IPE HAS NOT BEEN SAVED. EITHER INSERT A NEW DISK OR REMOVE THE WRITE-PROTECT TABFROM THIS ONE."
40080 IF ER = 8 THEN PRINT "AN INPUT/OUTPUT ERROR HAS OCCURRED!! MAKE SURE THE DISK IS LOADED PROPERLY & THE DRIVE DOOR IS CLOSED. THE CURRENT RECIPE HAS NOT BEEN SAVED."
40090 IF ER = 5 THEN PRINT D$"DELETERF."NM$: PRINT "THE RECIPE FILES ARE NOT ON THIS DISK. THE CURRENT RECIPE HAS NOT BEEN SAVED."
40100 FOR X = 1 TO 5: CALL BP: NEXT : PRINT : END
50000 REM <CTRL-J><CTRL-J><CTRL-J>::: INITIALIZATION :::<CTRL-J><CTRL-J>
50010 TEXT : HOME : SPEED= 255
50020 D$ = CHR$(4): REM CTRL-D
50030 Q$ = CHR$(34): REM QUOTE
50040 S$ = CHR$(32): REM SPACE
50045 U$ = CHR$(95): REM SCORE
50047 H$ = CHR$(8): REM BCKSPC
50070 LFT = 32: REM LEFT MARGIN
50080 WTH = 33: REM SCREEN WIDTH
50090 TP = 34: REM TOP MARGIN
50100 BM = 35: REM BOTTOM MARGIN
50110 CT = -958: REM CLR WNDW
50120 UP = -912: REM SCROLL UP
50130 KB = -16384: REM KYBOARD
50140 CB = -16368: REM CLR KBD
50150 BP = -198: REM CALL BEEP
50180 VC = 37: REM VERT.CURSOR
50190 DIM NM$(60): REM DIMENSION NM$ ARRAY
50191 FOR X = 1 TO 40:DASH$ = DASH$ +"-": NEXT
50192 NOTRACE : REM TRACE <OFF>
50196 FOR X = 0 TO 9: READ CT$(X): NEXT : REM READ IN CATE- GORY NAMES
50199 REM <CTRL-J><CTRL-J><CTRL-J> ::: MENU :::<CTRL-J><CTRL-J>
50200 INVERSE : VTAB 2: PRINT SPC( 40): VTAB 23: PRINT SPC( 40): FOR X = 3 TO 22: VTAB X: HTAB 1: PRINT S$;: HTAB 40: PRINT S$: NEXT